package com.cim.model
{
	public class ClasificadorNaranjas
	{
		private var clasesNaranja : Array = new Array();
		private var claseDefectuosa: ClaseNaranja = new ClaseNaranja(DEFECTUOSA); 
		static public const CLASE_A:String = "Clase A";
		static public const CLASE_B: String = "Clase B";
		static public const DEFECTUOSA: String = "Defectuosa";
		
		public function ClasificadorNaranjas()
		{
			//clasesNaranja.push(new ClaseNaranja(CLASE_A,0.1,0.2,0.1,0.2));// chicas y livianas son defectuosas
			
			clasesNaranja.push(new ClaseNaranja(CLASE_A,0.2,0.3,0.1,0.2));//grandes pero livianas
			clasesNaranja.push(new ClaseNaranja(CLASE_A,0.1,0.2,0.15,0.3));//chicas pero pesadas
			clasesNaranja.push(new ClaseNaranja(CLASE_B,0.2,0.3,0.2,0.3));// pesadas y grandes
		}
		
		public function clasificar(naranja:Naranja):ClaseNaranja{
			for(var i:uint = 0;i < clasesNaranja.length; ++i){
				var clase:ClaseNaranja = clasesNaranja[i];
				if(perteneceARango(naranja.getPeso(),clase.getPesoMin(),clase.getPesoMax()) &&
				   perteneceARango(naranja.getDiametro(),clase.getDiametroMin(),clase.getDiametroMax())){
					   return clase;
				   }
			}
			return claseDefectuosa;
		}
		
		private function perteneceARango(valor:Number, minRango:Number, maxRango:Number):Boolean{
			return valor >= minRango && valor <= maxRango;
		}
	}
}
